home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_02_03
/
2n03027a
< prev
next >
Wrap
Text File
|
1991-01-09
|
946b
|
56 lines
{*
* arraycmp - a general-purpose array comparer in Pascal
*}
type
cf_t = function (var x, y) : integer;
function arraycmp(var s1, s2; n, size : word; cf : cf_t)
: integer;
type
bytes = array [0 .. 65534] of byte;
var
cmp : integer;
i : word;
begin
cmp := 0;
i := 0;
while (i < n * size) and (cmp = 0) do
begin
cmp := cf(bytes(s1)[i], bytes(s2)[i]);
i := i + size;
end;
arraycmp := cmp;
end;
{*
* Some element comparison functions
*}
function intcf(var p, q) : integer; far;
begin
intcf := integer(p) - integer(q);
end;
function realcf(var p, q) : integer; far;
begin
if real(p) < real(q) then
realcf := -1
else if real(p) < real(q) then
realcf := 0
else
realcf := 1;
end;
function strcf(var p, q) : integer; far;
begin
if string(p) < string(q) then
strcf := -1
else if string(p) < string(q) then
strcf := 0
else
strcf := 1;
end;